(_) Project Sugar Cake (_)
    (    Changelog    )
This document records front end facing changes made to the mod/framework

Changelog Notes Key
"=" (DEV only) signifies change only applies to this release chain
".." (DEV only) lacks testing / requires more testing before release version
">.." (DEV only) Broken when testing, needs fixing before release (or be disabled)

General Notes (applies to newest verion)
	Note : The "register animation" validators still mostly assume the metadata supplied is correct, this means you can technically 'force' a bad animation to register which may not play correctly, however if metadata is correct then animations should work as intended
	Note : API method may be altered in the future, but for now this works
	Note : API Call "SCake_RegisterAnim" and "SCake_RegsiterAnimEvent" require the source structs to use (provided with SDK)

----- ----- ----- ----- -----
SCake Version 0.2.0 DEV (Beta)

	Note : This updated the format and data for .json files, all animation packs must be updated to the new format (I already contacted anim-pack creators, view the new templates to see the changes and format)
	Note : This update adds persistence! If the new _SCake_Save_.json files are not saving/loading properly, let me know!
	Note : This update adds support for MorphTarget Models to modify 'bodies' dynamically based on the new Sexual Heat system and for animations!

	Added : New "__Create_Load_List__.bat" file in AnimJSON which updates the _LoadList.json when activated (May only work on Windows, skips files starting with an underscore)
..	Added : API Function "SCake_AdjustAnimCamPos" which adjusts the camera postion for the player while in an animation
..	Added : API Function "SCake_TraceForPal" which uses the camera position and rotation to scan for pals, useful for debug code (Not always accurate so other methods are recommended for proper selections or interactions with pals)
..	Added : API Dispatcher "SCake_ED_EventOrgasm" and "SCake_ED_PalOrgasm" which trigger when an Animation Event / Character triggers climax/orgasm
..	Added : API Dispatcher "SCake_ED_PalAroused" which triggers when a character reaches enough 'Heat' to become properly aroused (Horny status ^.-)
	Added : API Dispatcher "SCake_ED_TrackPalEnabled" and "SCake_ED_TrackPalDisabled" which trigger when a pal is either enabled or disabled in the new tracking system (Note : Pals do not instantly start tracking or instantly stop tracking when they become valid/invalid, do not use this for validity checks! Use 'IsValid' through UE naively instead!)
	Added : Holding the camera control keys during animations now repeats, making adjustments easier
..	Added : Report for failed JSON load now shows the json entry that failed to load
	Added : Setting "Invulnerable During Anims" which makes characters unable to be harmed during Animation Events until the end, enabled by default
..	Added : Automatic CharacterID conversions for compatible pals (This means animation compatibiltiy can now define the base pal CharacterID and all variables that are compatible should be detected, input CharacterIDs for variants can still be registered with default size detection)
..	Added : When animations are started characters will now move to the ground
	Added : Register now also shows fail count similar to success counts
	Added : Settings will now save into a .json file within the ~mods folder allowing them to be saved and loaded between sessions (The file name should be _SCake_SaveSystem.json)
	Added : Global camera adjustment to save file so it persists between sessions (individual camera adjustments will be added in the future when persistence/cache is set up for it)
	Added : Character Stats now track Sexual Encounter counts (Increases if there are more than 1 characters in an erotic animation)
	Added : Character Stats now track Orgasm counts (increases every time the character has an orgasm)
	Added : New dynamic pal stat tracking, all active pals should now be captured and have SCake's stats applied (Mostly just Sexual Pleasure and Heat for now)
	Added : Pal SCake Stats will now save into a .json file within the ~mods folder, enabling persistence (should save as _SCake_SavePal.json, the amount of memory this system takes over long play sessions will need to be monitored, but shouldn't be too bad)
..	Added : Sexual Heat system, this affects the desire and sensitivity to sexual activity (slowly increases until orgasm is eventually reached or a heat reduction event occurs, then decreases rapidly to 0 then begins rising again with values over 100% increasing much slower)
..	Added : "Aroused" Morph Target to framework, the "Aroused" morph increases as Heat increases, and sets to 100% when in erotic animations, useful for erections or arousal based body modifiers (morphtarget names could potentially become editable in the future)
..	Added : Sexual Pleasure gained in erotic animations is now affected by Heat (Heat acts as a multiplier with an offset, at 0% Heat gain is at 80%, 100% = 100%, 200% = 120%, 300% = 140%)
	Added : Facial expression control to Animation Player, changes expression for supported characters while animations play (Currently sets a static expression but will be configurable by animations in future versions)
	Added : "Pleasure Stage Progression" SCake Setting, while enabled stages will also progress through average sexual pleasure from all participants based on duration weight
	Added : "Pleasure Progression Mode" to the Animation Player and SCake Settings, when enabled stages in animations are allowed to progress when the average Sexual Pleasure reaches a threshold calculated from duration weight of each stage (defaults on, only tries to progress looping animations, Max Event Duration is still respected and will progress regardless of this setting)

	Changed : The Animation UI should now show the player's display name instead of "Player"
..	Changed : The Animation UI should now show all players as "Player" instead of "Character" (useful in multiplayer)
	Changed : The Animation UI should now attempt to find the proper in-game name to display if no nickname is set for a pal
..	Changed : Made major changes to the .json structure for easier creation, optimize parsing, and removing some variables that will go unused, old .json files will fail to register (Simplified the structure to run off order dependent arrays, so params still require slot specifications if they can contain multiple entries per-slot, check included templates to adjust your own .json files)
	Changed : JSON parser improvements/optimizations, let me know of any weirdness or fails when it shouldn't
..	Changed : Limited the number of json registers per frame (will only try to load and pass 10 json sets per frame, this will slow down the register but ensures HDD users won't experience stutter when we start loading thousands of animations, register still only processes 1 animation/event per frame, this only affects sending to the register when we load the .json files)
	Changed : Register automatic start time reduced to 3 seconds (was 8 before, can be changed in the _SCake_SaveSystem_.json)
	Changed : Animation Events that fail to start animations will now immediately destroy themselves instead of waiting (optimization)
	Changed : Overhauled stats handling backend, now runs based on game time and defaults were updated to reflect this
	Changed : Pals now start with random Sexual Pleasure (No more than 20%)
..	Changed : Animation Player now uses the new stats tracking system to apply and track stats like pleasure, this makes effects based on Game-Time just like other stats, Sexual Pleasure defaults was adjusted for this
..	Changed : Adjusted some setting descriptions and displays to better align with systems and changes
	Changed : "Event Duration" is now "Max Event Duration", though the behavior is effectively the same but will make more sense as more features are added

	Removed : "ByName" variables when registering animations (The intended system didn't work and using CharacterID instead just makes a lot more sense)

..	Fixed : "Hold Down (K key) to start anim with summoned pal" now properly disables when disabling Debug Input
	Fixed : Characters in animations should no longer become eligible for another animation if multiple start anim events are triggered on them
	Fixed : Instances where animations took too long to process their start function and would fail to set all parameters properly
	Fixed : JSON loader failing to load files from the LoadList if they had .json in the entry
	Fixed : Menu scrolling offset being slightly off allowing a slow drift downward
	Fixed : Report text that shows up should now properly wrap when the text extends too far
	Fixed : Project Sugar Cake should no longer run any logic while in the Main Menu or outside a saved game (Only starts up the UI, though the API should be accessible)
	Fixed : Characters who orgasm once will not properly have their sexual pleasure checked in subsequent orgasm checks
	Fixed : Animation Player getting stuck in an orgasm loop if pleasure gain was set too high
	Fixed : FootIK interupting normal animation flow when animating certain sections of certain characters (FootIK should be disabled during anims now)
	Fixed : Slopes causing characters to tilt while animating, causing alignment issues (Looks a bit odd given characters will now float a bit more in some situations, but much better than alignment not working)
	Fixed : Stages "Speed Mod" value should now properly affect the duration of non-looping animations
	Fixed : Climaxes not adjusting duration properly if no climax variant was included with the animation
	Fixed : General optimizations across most systems
	
----- ----- ----- ----- -----
SCake Version 0.1.0 DEV (Beta)

	Note : Mods using the SCake SDK/API will need to be updated to the new API functions and reference the new actor "ProjectSugarCake"
	Note : Updated templates provided with SCake to reflect changes in data structure
	Note : Menu UI requires keyboard input for now, I messed up when building the assets so click actions don't call-back properly and were removed
	Note : Non-standard debug keys may not be reported in changelogs from this point forward (I constantly change them depending on what I'm working on, so trying to track them will get difficult as things get more complex)

	Added : In JSON data for 'size" parameters, entering 'default' now automatically converts to the default size param for the defined CharacterID (if one exists, otherwise None is returned)
	Added : API Event "SCake_StopAnim_EventRef" which stops the Animation Event of the given Event Reference
	Added : API Function "SCake_InterpretError" which converts a returned error code into a readable string (Used for passing into UI or make debugging easier)
	Added : API Function "SCake_GetPalAnim" which searches for a given pal and returns if they are in an animation and the event reference if so
	Added : API Function "SCake_GetEventCompParams" which returns variables from the provided Event Reference collected by functions/Dispatchers
	Added : API Dispatcher "SCake_ED_AnimStart" which sends when animations start with the Event Reference (If you store this value remember to check if it's valid and if the animation is still playing before trying to pull data)
	Added : API Dispatcher "SCake_ED_AnimEnd" which sends when animations end with the Event Reference (Do not store the returned reference and pull your data immediately as Event References will delete themselves a short bit after an animation ends)
	Added : New input system implemented with input states allowing new menu and position control (Default keys are U=Menu O=Select I=up k=Down J=Left L=Right)
	Added : Fully custom menu system implemented, use the Menu key (U by default) to open and up/down/left/right keys to interact with it (I/K/J/L by default) (No API access yet as some revisions still need to be made before it's dynamic features are usable)
	Added : "Settings" menu to SCake Main Menu
	Added : "Animation Event Duration" to the Settings Menu (controls how long Animation Events aim to last in seconds)
	Added : "Pleasure Gain Rate" to the Settings Menu (controls how quickly Sexual Pleasure is gained in Erotic Animation Events)
	Added : "Pleasure Decay Rate" to the Settings Menu (controls how quickly Sexual Pleasure is lost while not in an Erotic Animation Event)
	Added : "Pleasure For Orgasm" to the Settings Menu (controls how much Sexual Pleasure is required for this character to have an orgasm)
	Added : "Pleasure Loss On Orgasm" to the Settings Menu (controls how much Sexual Pleasure is reduced when characters have an orgasm)
	Added : "Allow Debug Input" to the Settings Menu (controls if the debug controls for SCake are enabled, will be disabled by default in the future)
	Added : Animation List to the SCake Menu which shows the "AnimName" of all Animations Registered with parameters showing in the description box (If no anim name is found the "UniqueEventID" is displayed instead)
	Added : Animation Event List to the SCake Menu which shows the "EventName" of all Animation Events Registered with parameters showing in the description box (If no anim name is found the "UniqueEventID" is displayed instead)
	Added : New Animation Menu which shows up with 'climax progress bars' for participants in the selected animation (Player animations will already be selected)
	Added : Animation menu which allows adjusting the position of characters in animations, also allows ending animations if "Allow Debug Input" is enabled (Currently does not save or have any persistence)
	Added : The Game UI will now hide by default when the player enters an animation (and should re-appear after the animation ends)
	Added : Attempts to hide the in-game UI when a player animation starts (should re-appear when the animation is over)
	Added : If a player is in an animation the camera position can now be controled with W/A/S/D/Q/E keys (Keys display in the animation UI, position saves between animations and should return to normal after the player animation ends, sometimes the game disables these keys or locks the camera and the camera function may stop working)
	Added : With debug input enabled, when holding down SCake's Down Input key (K by default) if no valid target is found SCake will now try to start an anim with the summoned pal instead (sometimes fails since the reference is invalid, seems to be a game bug but resummoning your pal usually fixes it)

	Changed : UI entry point to be slightly higher up (helps make the new menu more visible when there's more entries in the list)
	Changed : SCake_StartAnimEvent_Basic is now a function and now returns if the animation started and the order+references of pals in the animation
	Changed : SCake_StartAnimEvent_Advanced is now a function and has return values just like the Basic version
	Changed : Some debug inputs were added and others changed key defaults
	Changed : Event references will remain valid for a short period after animations end instead of instantly deleting themselves (useful for pulled data after an animation ends and to allow manual scanning of animations ending without losing access to data)
	Changed : "O" debug key now opens the Animation Menu for the Target Pal

	Removed : "TransformBySize" no longer includes Rotation, simplifying the data structure a small amount (Rotation is already included with the "TransformAllOffset" and there shouldn't be a need for a rotation by size)
	Removed : The Testing Angel has departed, shall she forever grace us with great debugging and moral support!

	Fixed : The default _LoadList.json had tabs instead of spaces for the 2 additional entry slots causing errors in some cases, changed them to spaces
	Fixed : Animations were not validating in cases where all characters in an animation were valid for all slots
	Fixed : Certain parameters not being set to default when registering Animation Events with JSON when those values were not defined
	Fixed : "SpeedMod" in stages having no effect
	Fixed : Instances where the animation slot sorting would fail and result in animations breaking or not playing properly
	Fixed : Global Climax Variants not functioning properly (I forgot to connect a node >.>)
	Fixed : Drastically optimized the positioning code within the Animation Player (Also simplified implementation without any loss in functionality)
	Fixed : "TransformBySize" not parsing from JSON correctly
	Fixed : Corrected many positional issues caused by using inconsistent sources for the positioning (Still never found the 'exact' cause, but new code works so whatever)
	Fixed : Some instances where SCake's control overrides were being overwritten by external forces (SCake still fails to prevent certain actions that breaks animations)
	Fixed : Player being able to aim and throw a pal sphere while in an animation, breaking the animation playback
	Fixed : Player being able to interact with other pals while in an animation, potentially causing a soft lock state while breaking AI and animation playback
	Fixed : Characters (including the player) being able to crouch while in animations (Normally didn't break animation playback but could break AI or cause camera issues for the player)

----- ----- ----- ----- -----
SCake Version 0.0.3 DEV (Alpha)
	Note : Data structure had changes this update, BP mods will need to be recompiled with the newest SDK release
	
..	Added : JSON string and data parser for registering animations, now you can create JSON files and place them in the ~mods/AnimJSON then add the file name to the "_LoadList.json"
		- If any errors are in the JSON file's formating it will fail to load (BP limitation)
		- Animations no longer need to be LogicMods and can be installed like any replacer mod, though BP registeration is still available
		- Users can create their own JSON files or edit existing ones to create their own events or customize animations
		- Templates are now included with SCake's main installation
		- "_LoadList.json" is required, however it is split up in distribution to prevent overwritting player's customized json when updating the mod
	Added : SCake_RegisterAllJSON to the API, call this to re-register all JSON animations listed in the _LoadList
..	Added : "Speed Default" in registered animations now functional
..	Added : "StartTime" in registered animations now functional
..	Added : "Speed Mod" in Stages now functional
..	Added : Keybind K (Start animation between 2 targets) will now try to start a solo animation if the same character is selected twice
..	Added : "AddTags" in AnimEvent now functional (Appends additional tags to the event in addition to those added in the animations)
	Added : Animation Register now sends a total successful registered count whenever there is a pause while registering

	Changed : Simplified "Act Types" and introduced "Act Location" to make registering animations easier and allow easier future additions
	Changed : "HasPostClimax" for registering events is now set to false by default
	Changed : "EquipLocation" is now a 'name' variable type to support socket/bone names and not just presets (Equip system is still non-functional)
	Changed : When characters path to animate, even a failed move (When 'Move Failed' would display) will still trigger the animation (characters will just teleport, helps the mod feel less inconsistent and buggy. This issue isn't really with the framework, it's just the quick and dirty AI which bugs out a lot.)

	Removed : Anim and AnimEvent Registered messages from showing in ReportUI (Still shows failed registers with error codes)
	Removed : Equip Location enum is removed and now invalid (we parse a name variable now instead to allow custom bone/slot names)

	Fixed : Sexual Pleasure going into the negatives after an animation (accidentally shipped the wrong build which had this bug >.<)
	Fixed : Register component not automatically starting after a game load if a register API function is never called
	Fixed : "Stage Order" being ignored and erroring out if the animation playing didn't play through stages linearly
		- Note : This Stage Order bug also broke things like play-time, animaiton playback, post-climax anims, all should hopefully be fixed now
	Fixed : Stage Duration for non-looping animations setting to 0 seconds when the number of stages exceeded actor count (Was a very silly mistake X.x)
	Fixed : AnimVersion number not working properly (Technically also fixed the internal version number not working correctly, but this means nothing front-end)

----- ----- ----- ----- -----
SCake Version 0.0.2 DEV (Alpha)
	Note : Essentially Rebuilt the entire animation player and added the API systems, not everything is accessible yet but adding things in the future will be much easier once we know what to add

	Added : Animator now supports multiple characters at once (can play Human X Human, Pal X Human, Pal X Pal, whatever!)
	Added : AI Handler to animator to help prevent AI breaking animations / conflicting (still has minor issues)
	Added : Position handling to animator, should keep animation in the same place even if characters are pushed or pulled
	Added : New validator should auto-sort and organize animating characters
	Added : Additional validation for incompatible animations, should prevent any non-compatible animation (that have proper metadata) from playing
..	Added : More advanced climax handler, now supports specific slots orgasming to trigger specified animations within a registered animation event
	Added : Pleasure gain for all characters in animations (was just the host player previously)
	Added : Support for Post Climax animation playback after climax animations, skips and just ends if no post anim is found
	Added : Support for 'included tags' and optionally requiring those tags when starting animations
	Added : Basic stat tracking for characters where it's neccesary (no persistence between save loads yet >.<)
	Added : Optimization systems to stat tracking so we only track what's needed (Basic so far, needs more advanced systems in the future)
	Added : API Base for other mods to call and use SCake functions (such as starting/stopping animations, needs to be expanded on)
	Added : API Call "SCake_StartAnimEvent_Basic" - Starts an animation between the supplied characters with minimal information
	Added : API Call "SCake_StartAnimEvent_Advanced" - Starts an animations between the supplied characters with more advanced information
	Added : API Call "SCake_StopAnim_PalTarget" - Stops any animation event the target character is involved in
	Added : API Call "SCake_SendReportMessage" - Sends a report message to SCake's report UI, visible to the player
	Added : API Call "SCake_CheckStat_Pleasure" - Returns the current Sexual Pleasure of the sent character
	Added : API Call "SCake_Stat_AddPleasure" - Adds the specified amount to the target's Sexual Pleasure
	Added : "Start animation between player and target" with default key "K"
	Added : "Start animation between 2 targets" with default key "J"
	Added : "Stop animation target is involved in" with default key "I"
	Added : Pals play their "Happy" emote/action when animation events end (more advanced emotion handling could be added in the future)
	
	Changed : "Start solo player animation" default key changed to "L"
	Changed : "Stop player involved animation" default key changed to "O"
	Changed : "Report player's sexual pleasure" default key changed to "U"
	Changed : SyncPosition animation setting now defaults to disabled
	Changed : Animation player was re-built and has much more advanced functions now with better duration tracking
	Changed : Orgasms now add additional animation time so they don't conflict with normal stage progression
	Changed : Reduced how quickly Sexual Pleasure decays when outside an animation event
	
	Removed : A lot of debug notifications should no longer show up in the release build (sorry if I missed any >.<)

	Fixed : Fixed animations only ever registering as "female solo human" animations
	Fixed : Animation player getting stuck and freezing indefinately if cancelled improperly
	Fixed : "Pals in Animation" tracker getting stuck if animation event was cancelled improperly
	Fixed : Animating characters getting pushed/pulled or continueing movement if already in motion when animation starts
	Fixed : Typos/misspellings in data structure

----- ----- ----- ----- -----
SCake Version 0.0.1 DEV [Initial Release] (Alpha)
	Has ability to register animations and animation events, lacks validation
	Features limited animation player that supports solo female human animations with climax switching
	Can play solo-female animations for the player character via hotkey if any are registered (hotkey /)
	Can end animations the player is involved in via hotkey (hotkey ])
	Tracks sexual pleasure of the player character, can check with hotkey (hotkey ')
	Sexual pleasure will decay over time when not in an animation